文件格式
文件格式主要采用txt和xml格式
其中txt文件存放从外部传入的数据
xml存放原始数据
txt文件操作
- 使用QFile类打开txt文件(注意采用绝对路径时要使用两个“//”)
1 2 3 4
| //---打开文件并读取文件内容 QFile files("data.txt"); //绝对路径,测试成功,采用下面代码 //QFile flies("//hotstar//scan_date//date.text")
|
2.使用QList类来提取txt文件的内容并采用正则将原始数据进行处理代码如下
1 2 3 4 5 6 7 8 9
| QTextStream textStream(&files); QRegExp rx("(\\d{13})"); while (!textStream.atEnd()) { rx.indexIn(textStream.readLine()); lists<<rx.cap(1); }
|
3.采用Qxml类对xml数据进行处理并与上述中的lists列表进行比较并处理输出(注意qt使用xml时,需要在.pro文件中添加 QT +=xml否则无法运行)
(1) 使用setContent()函数将xml文档中的内容解析为一个DOM树
1 2 3 4 5
| if (!doc.setContent(&file)) { file.close(); qDebug()<<"file2"; }
|
(2)使用QDomDocument类中的firstChild()函数获取它的第一个子节点
,使用documentElement函数获取根节点其他操作如下:
函数 |
含义 |
lastChild() |
获取最后一个节点 |
childNodes() |
获取该节点的所有孩子节点的一个列表 |
nextSibiling() |
获取下一个兄弟节点 |
previousSibiling() |
获取前一个兄弟节点 |
tagName() |
获取标签名 |
attribute() |
获取指定属性的值 |
text() |
获取其中文本内容 |
代码如下 :
1 2 3 4
| QDomNode node = list.at(i); if(node.isElement()) ui->listWidget->addItem(" " + node.toElement().tagName() + " : " + node.toElement().text());
|
(3)使用forearch()遍历lists的内容,并将符合id的xml节点输出到listwidget上代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| if (n.isElement()) { QDomElement e = n.toElement(); foreach (QString str, lists) { if(str==e.attribute("id")){ qDebug()<<e.attribute("id"); QDomNodeList list = e.childNodes(); for (int i=0; i<list.count(); i++) { QDomNode node = list.at(i); if(node.isElement()) ui->listWidget->addItem(" " +node.toElement().tagName() + " : " + node.toElement().text()); } } } }
|